package com.dy.字符串.有效的字母异位词;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;

/*
给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的一个字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true
示例 2:

输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。

进阶:
如果输入字符串包含 unicode 字符怎么办？你能否调整你的解法来应对这种情况？
 */
//其实是是否为相同字母构成的单词
public class Solution {
    public static boolean isAnagram(String s, String t) {
        if(s.length()!=t.length()){
            return false;
        }
        char[] str_s = s.toCharArray();
        char[] str_t = t.toCharArray();

        boolean check = false;
        for(int i = 0; i<s.length();i++){
            for(int j =i;j<t.length();j++){
                if(str_s[i]==str_t[j]){
                    char tmp = str_t[i];
                    str_t[i] = str_t[j];
                    str_t[j] = tmp;
                    check = true;
                    break;

                }
            }
            if(!check){
                return false;
            }
            check = false;
        }
        return true;
    }
    //排序
    public static boolean isAnagram2(String s, String t) {
        if(s.length()!=t.length()){
            return false;
        }
        char[] str_s = s.toCharArray();
        char[] str_t = t.toCharArray();
        Arrays.sort(str_s);
        Arrays.sort(str_t);
        String new_s =new String(str_s);
        String new_t = new String(str_t);
        return new_s.equals(new_t);

    }
    //建表
    public static boolean isAnagram3(String s, String t) {
        if(s.length()!=t.length()){
            return false;
        }
        char[] dictionary = new char[26];
        for(int i =0 ; i<s.length();i++){
            dictionary[s.charAt(i)-'a']++;
        }

        for(int i = 0 ;i<t.length();i++){
            dictionary[t.charAt(i)-'a']--;
        }
        for (int i : dictionary)
            if (i != 0) return false;
        return true;


    }
}
